Peripheral Component Interconnect (PCI) is defined by www.wikipedia.org as a host bus for attaching hardware devices in a host. The PCI bus supports the functions found on a micro-controller bus, but in a standardized format that is independent of any particular micro-processor. Devices connected to the bus appear to the micro-processor to be connected directly to the micro-processor bus, and are assigned addresses in the micro-processor's address space. This microprocessor can belong to the x86 microprocessor family.
Attached devices can take either the form of an integrated circuit fitted onto the motherboard itself, called a planar device in the PCI specification, or an expansion card that fits into a slot.
Typical PCI cards used in PCs include: network cards, sound cards, modems, extra ports such as USB or serial, TV tuner cards and disk controllers. PCI video cards replaced ISA and VESA cards, until growing bandwidth requirements outgrew the capabilities of PCI; the preferred interface for video cards became AGP, and then PCI Express. PCI video cards remain available for use with old PCs without AGP or PCI Express slots. It is noted that since 2003 there is also a newer version called PCI-Express
PCI provides separate memory and input/output (I/O) port address spaces for the rest of the system, like an external x86 micro-processor family, 64 and 32 bits, respectively. Addresses in these address spaces are assigned by software. A third address space, called the PCI Configuration Space, which uses a fixed addressing scheme, allows software to determine the amount of memory and I/O address space needed by each device. Each device can request up to six areas of memory space or I/O port space via its configuration space registers.
In a typical system, the firmware (or operating system) queries all PCI buses at startup time (via PCI Configuration Space) to find out what devices are present and what system resources (memory space, I/O space, interrupt lines, etc.) each needs. It then allocates the resources and tells each device what its allocation is.
The PCI configuration space also contains a small amount of device type information, which helps an operating system choose device drivers for it, or at least to have a dialogue with a user about the system configuration.
In order to interact with the PCI card the operating system needs to have an appropriate driver to that PCI card—and at the absence of such a driver—should indice the user (as a result of said dialogue) to download or otherwise provide such a driver.
A PCI end point can be a storage controller that is coupled to a hard disk. Many micro-processors can host multiple operating systems that may share single PCI end point. In order to interface with the hard disk each operating system needs to have its unique storage controller or to have a synchronization mechanism that synchronizes the accesses of the different operating systems to the same hard disk.
There is a growing need to provide PCI cards that allow more efficient initialization processes.